use crate::{Note, APP_DATA};

pub struct NoteOperations;

impl NoteOperations {
    // 移动便签
    pub fn move_note(note_id: &str, x: f32, y: f32) {
        let mut app_data = APP_DATA.lock().unwrap();
        if let Some(note) = app_data.notes.iter_mut().find(|n| n.id == note_id) {
            note.position_x = x;
            note.position_y = y;
            app_data.save();
        }
    }

    // 调整便签大小
    pub fn resize_note(note_id: &str, width: f32, height: f32) {
        let mut app_data = APP_DATA.lock().unwrap();
        if let Some(note) = app_data.notes.iter_mut().find(|n| n.id == note_id) {
            note.width = width;
            note.height = height;
            app_data.save();
        }
    }

    // 更新便签内容
    pub fn update_note_content(note_id: &str, content: String) {
        let mut app_data = APP_DATA.lock().unwrap();
        if let Some(note) = app_data.notes.iter_mut().find(|n| n.id == note_id) {
            note.content = content;
            note.updated_at = chrono::Local::now();
            app_data.save();
        }
    }

    // 更新便签标题
    pub fn update_note_title(note_id: &str, title: String) {
        let mut app_data = APP_DATA.lock().unwrap();
        if let Some(note) = app_data.notes.iter_mut().find(|n| n.id == note_id) {
            note.title = title;
            note.updated_at = chrono::Local::now();
            app_data.save();
        }
    }

    // 更改便签颜色
    pub fn change_note_color(note_id: &str, color: String) {
        let mut app_data = APP_DATA.lock().unwrap();
        if let Some(note) = app_data.notes.iter_mut().find(|n| n.id == note_id) {
            note.color = color;
            app_data.save();
        }
    }

    // 最小化/恢复便签
    pub fn toggle_minimize_note(note_id: &str) {
        let mut app_data = APP_DATA.lock().unwrap();
        if let Some(note) = app_data.notes.iter_mut().find(|n| n.id == note_id) {
            note.is_minimized = !note.is_minimized;
            app_data.save();
        }
    }

    // 删除便签
    pub fn delete_note(note_id: &str) {
        let mut app_data = APP_DATA.lock().unwrap();
        let position = app_data.notes.iter().position(|n| n.id == note_id);
        if let Some(pos) = position {
            app_data.notes.remove(pos);
            app_data.save();
        }
    }

    // 获取所有便签
    pub fn get_all_notes() -> Vec<Note> {
        let app_data = APP_DATA.lock().unwrap();
        app_data.notes.clone()
    }

    // 搜索便签
    pub fn search_notes(query: &str) -> Vec<Note> {
        let app_data = APP_DATA.lock().unwrap();
        let query = query.to_lowercase();
        
        app_data.notes
            .iter()
            .filter(|note| {
                note.title.to_lowercase().contains(&query) || 
                note.content.to_lowercase().contains(&query)
            })
            .cloned()
            .collect()
    }
} 